import request from "@/request";


// 参数接口
export interface UpdateBooksParams {
    id?: number;
    code?: string;
    isbn?: string;
    name?: string;
    sortsId?: number;
    sortsName?: string;
    author?: string;
    publish?: string;
    price?: number;
    volume?: number;
    inventory?: number;
    createBy?: string;
    createTime?: string;
    updateBy?: string;
    updateTime?: string;
    undock?: number;
    unlucky?: number;
    remark?: string;
}

// 响应接口
export interface UpdateBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 修改编号
 * @param {object} params $!{table.comment}
 * @param {number} params.id 编号
 * @param {string} params.code 书册编码
 * @param {string} params.isbn 书册ISBN
 * @param {string} params.name 书册名称
 * @param {number} params.sortsId 书册类别
 * @param {string} params.sortsName 类别名称
 * @param {string} params.author 书册作者
 * @param {string} params.publish 书册出版社
 * @param {number} params.price 书册价格
 * @param {number} params.volume 书册库存
 * @param {number} params.inventory 书册剩余
 * @param {string} params.createBy 创建者
 * @param {string} params.createTime 创建时间
 * @param {string} params.updateBy 更新者
 * @param {string} params.updateTime 更新时间
 * @param {number} params.undock 伪删除（0-已 1-未）
 * @param {number} params.unlucky 状态（0-禁用 1-正常）
 * @param {string} params.remark 备注
 * @returns
 */
export function updateBooks(params: UpdateBooksParams): Promise<UpdateBooksRes> {
    return request.post(`/booksEntity/update`, params);
}

// 响应接口
export interface RecoverListBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 恢复列表
 * @returns
 */
export function recoverListBooks(): Promise<RecoverListBooksRes> {
    return request.post(`/booksEntity/recoverList`);
}

// 响应接口
export interface RecoverBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 恢复数据
 * @param {string} param
 * @returns
 */
export function recoverBooks(param: string): Promise<RecoverBooksRes> {
    return request.post(`/booksEntity/recover/${param}`);
}

// 响应接口
export interface ListPageBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 列表分页
 * @param {string} page
 * @param {string} pageSize
 * @returns
 */
export function listPageBooks(page: number, pageSize: number): Promise<ListPageBooksRes> {
    return request.post(`/booksEntity/listPageBooks?page=${page}&pageSize=${pageSize}`);
}

// 参数接口
export interface InsertBooksParams {
    id?: number;
    code?: string;
    isbn?: string;
    name?: string;
    sortsId?: number;
    sortsName?: string;
    author?: string;
    publish?: string;
    price?: number;
    volume?: number;
    inventory?: number;
    createBy?: string;
    createTime?: string;
    updateBy?: string;
    updateTime?: string;
    undock?: number;
    unlucky?: number;
    remark?: string;
}

// 响应接口
export interface InsertBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 保存数据
 * @param {object} params $!{table.comment}
 * @param {number} params.id 编号
 * @param {string} params.code 书册编码
 * @param {string} params.isbn 书册ISBN
 * @param {string} params.name 书册名称
 * @param {number} params.sortsId 书册类别
 * @param {string} params.sortsName 类别名称
 * @param {string} params.author 书册作者
 * @param {string} params.publish 书册出版社
 * @param {number} params.price 书册价格
 * @param {number} params.volume 书册库存
 * @param {number} params.inventory 书册剩余
 * @param {string} params.createBy 创建者
 * @param {string} params.createTime 创建时间
 * @param {string} params.updateBy 更新者
 * @param {string} params.updateTime 更新时间
 * @param {number} params.undock 伪删除（0-已 1-未）
 * @param {number} params.unlucky 状态（0-禁用 1-正常）
 * @param {string} params.remark 备注
 * @returns
 */
export function insertBooks(params: InsertBooksParams): Promise<InsertBooksRes> {
    return request.post(`/booksEntity/insert`, params);
}

// 响应接口
export interface ImportExcelBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 导入数据
 * @param {string} file
 * @returns
 */
export function importExcelBooks(file: object): Promise<ImportExcelBooksRes> {
    return request.post(`/booksEntity/importExcel`,file);
}

// 响应接口
export interface FindByNameBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 查询名称
 * @param {string} param
 * @returns
 */
export function findByNameBooks(param: string): Promise<FindByNameBooksRes> {
    return request.post(`/booksEntity/findByNameBooks/${param}`);
}

// 响应接口
export interface FindByIDBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 查询编号
 * @param {string} param
 * @returns
 */
export function findByIDBooks(param: string): Promise<FindByIDBooksRes> {
    return request.post(`/booksEntity/findByIDBooks/${param}`);
}

// 参数接口
export interface FindBooksParams {
    id?: number;
    code?: string;
    isbn?: string;
    name?: string;
    sortsId?: number;
    sortsName?: string;
    author?: string;
    publish?: string;
    price?: number;
    volume?: number;
    inventory?: number;
    createBy?: string;
    createTime?: string;
    updateBy?: string;
    updateTime?: string;
    undock?: number;
    unlucky?: number;
    remark?: string;
}

// 响应接口
export interface FindBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 条件查询
 * @param {object} params $!{table.comment}
 * @param {number} params.id 编号
 * @param {string} params.code 书册编码
 * @param {string} params.isbn 书册ISBN
 * @param {string} params.name 书册名称
 * @param {number} params.sortsId 书册类别
 * @param {string} params.sortsName 类别名称
 * @param {string} params.author 书册作者
 * @param {string} params.publish 书册出版社
 * @param {number} params.price 书册价格
 * @param {number} params.volume 书册库存
 * @param {number} params.inventory 书册剩余
 * @param {string} params.createBy 创建者
 * @param {string} params.createTime 创建时间
 * @param {string} params.updateBy 更新者
 * @param {string} params.updateTime 更新时间
 * @param {number} params.undock 伪删除（0-已 1-未）
 * @param {number} params.unlucky 状态（0-禁用 1-正常）
 * @param {string} params.remark 备注
 * @returns
 */
export function findBooks(params: FindBooksParams): Promise<FindBooksRes> {
    return request.post(`/booksEntity/findBooks`, params);
}

// 响应接口
export interface ExportExcelBooksRes {}

/**
 * 导出数据
 * @returns
 */
export function exportExcelBooks(): Promise<ExportExcelBooksRes> {
    return request.post(`/booksEntity/exportExcel`, {}, {
        responseType: "blob"
    });
}

// 响应接口
export interface DeleteTempBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 暂时删除
 * @param {string} param
 * @returns
 */
export function deleteTempBooks(param: string): Promise<DeleteTempBooksRes> {
    return request.post(`/booksEntity/deleteTemp/${param}`);
}

// 响应接口
export interface DeleteBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 永久删除
 * @param {string} param
 * @returns
 */
export function deleteBooks(param: string): Promise<DeleteBooksRes> {
    return request.post(`/booksEntity/delete/${param}`);
}

// 响应接口
export interface ListBooksRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 列表
 * @returns
 */
export function listBooks(): Promise<ListBooksRes> {
    return request.post(`/booksEntity/listBooks`);
}
